/*
 * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.inspur.edp.cdp.cdf.component.metadata.obsolete.metadata;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.inspur.edp.cdp.cdf.component.metadata.obsolete.metadata.datatype.ObseleteDataType;
import com.inspur.edp.cdp.cdf.component.metadata.obsolete.serializer.ObseleteComponentParameterDeSerialzier;
import com.inspur.edp.cdp.cdf.component.metadata.obsolete.serializer.ObseleteComponentParameterSerialzier;
import lombok.Data;

import java.io.Serializable;

/**
 * 构件方法参数模型
 *
 * @author Shawn Hou
 */
@Data
@JsonDeserialize(using = ObseleteComponentParameterDeSerialzier.class)
@JsonSerialize(using = ObseleteComponentParameterSerialzier.class)
public class ComponentParameter implements Serializable {

    private static final long serialVersionUID = -4163103018444482602L;

    @JsonProperty("Id")
    private String id;

    @JsonProperty("Code")
    private String code;

    @JsonProperty("Name")
    private String name;

    @JsonProperty("Classification")
    private Classification classification;

    @JsonProperty("DataType")
    private ObseleteDataType dataType;

    @JsonProperty("IsReturn")
    private boolean hasReturnValue;

    @JsonProperty("IsRequired")
    private boolean required;

    @JsonProperty("Description")
    private String description;

}
